/*****************************************************************************
 *
 * 作   者: 牟昆 * 创建时间: 2022/11/28 13:34:07 *
 * Copyright (C) 2008 - 鹏业软件公司
 *
 *****************************************************************************/

 import {DataPacket, NorDataList} from 'pengesoft-ng-lib';

 /**
  * 缴费记录类
  */
 export class PayRecord extends DataPacket {
   Id: string; // 缴费记录表id
   ContractId: string; // 合同Id
   Type: number; // 缴费类型(1:租金,2:押金，3:修理费，4:定金)
   OriginalPrice: number; // 原价（应缴费）（押金、定金、维修费用、租金原价）
   PayablePrice: number; // 应缴费（租金折扣后价格，押金增额后的）
   Coupon: number; // 优惠金额
   ActualMoney: number; // 实际已缴费
   CustomerAccount: string; // 缴费人id（关联到用户表id）
   CustomerName: string; // 缴费人姓名
   CompanyAccount: string; // 公司收款账号
   Description: Date; // 描述
   PayWay: number; // 缴费方式（微信、支付宝、现金、银行卡）
   Status: number; // 是否缴费
   CreateTime: Date; // 缴费记录生成时间
   EndTime: Date; // 应缴费时间（规定时间）
   ActualTime: Date; // 实际缴费时间
   DeadTime: Date; // 截至时间为延期情况下，截止时间和应缴时间保持一致）
   IsPostpone: number; // 是否延期（0 为延期，1延期）

   constructor(options: Partial<PayRecord> = {}) {
     super();
     this.Id = options.Id || '';
     this.ContractId = options.ContractId || '';
     this.Type = !options.Type ? 0 : Number.parseFloat(options.Type.toString());
     this.OriginalPrice = !options.OriginalPrice ? 0 : Number.parseFloat(options.OriginalPrice.toString());
     this.PayablePrice = !options.PayablePrice ? 0 : Number.parseFloat(options.PayablePrice.toString());
     this.Coupon = !options.Coupon ? 0 : Number.parseFloat(options.Coupon.toString());
     this.ActualMoney = !options.ActualMoney ? 0 : Number.parseFloat(options.ActualMoney.toString());
     this.CustomerAccount = options.CustomerAccount || '';
     this.CustomerName = options.CustomerName || '';
     this.CompanyAccount = options.CompanyAccount || '';
     this.Description = this.newDate(options.Description)!;
     this.PayWay = !options.PayWay ? 0 : Number.parseFloat(options.PayWay.toString());
     this.Status = !options.Status ? 0 : Number.parseFloat(options.Status.toString());
     this.CreateTime = this.newDate(options.CreateTime)!;
     this.EndTime = this.newDate(options.EndTime)!;
     this.ActualTime = this.newDate(options.ActualTime)!;
     this.DeadTime = this.newDate(options.DeadTime)!;
     this.IsPostpone = !options.IsPostpone ? 0 : Number.parseFloat(options.IsPostpone.toString());
   }
 }

 /**
  * 缴费记录类列表
  */
 export class PayRecordList extends NorDataList<PayRecord> {

   constructor(options: Partial<PayRecordList> | Array<PayRecord> = {}) {
     super(options, PayRecord);
   }
 }
